// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_VIEWS_FOCUS_FOCUS_MANAGER_DELEGATE_H_
#define UI_VIEWS_FOCUS_FOCUS_MANAGER_DELEGATE_H_

#include "ui/views/views_export.h"

namespace ui {
class Accelerator;
class AcceleratorTarget;
}

namespace views {

// Delegate interface for views::FocusManager.
class VIEWS_EXPORT FocusManagerDelegate {
public:
    virtual ~FocusManagerDelegate() { }

    // Activate the target associated with the specified accelerator.
    // First, AcceleratorPressed handler of the most recently registered target
    // is called, and if that handler processes the event (i.e. returns true),
    // this method immediately returns. If not, we do the same thing on the next
    // target, and so on.
    // Returns true if an accelerator was activated.
    virtual bool ProcessAccelerator(const ui::Accelerator& accelerator) = 0;

    // Returns the AcceleratorTarget that should be activated for the specified
    // keyboard accelerator, or NULL if no view is registered for that keyboard
    // accelerator.
    virtual ui::AcceleratorTarget* GetCurrentTargetForAccelerator(
        const ui::Accelerator& accelerator) const = 0;
};

} // namespace views

#endif // UI_VIEWS_FOCUS_FOCUS_MANAGER_DELEGATE_H_
